<?php

	/**
	*	 文件名：core.php
	*    创建人: 杨旭升
	*    创建时间: 2015/2/5
	*    最后修改时间: 2015/2/5
	*    文件功能概述: 核心类，负责model和action的分发
	*/

	Class Core {

		/**
		*	开始运行
		*/
		public static function run($c) { 

			//默认的model和index
			$model = $c['DEFAULT_MODEL'];
			$action = 'index';
			$modelPos = 1;
			$actionPos = 2;

			//解析url,第一个参数为model, 第二个参数为action, 之后的参数为get
			$url = $_SERVER["REQUEST_URI"];
			$url = explode('/', $url);
			$urlCount = count($url);

			//是否只设置了model
			$model = $url[$modelPos] == '' ? $model : $url[$modelPos];

			//如果url设置了model和action
			if($urlCount >= $actionPos+1) {

				//设置model，action
				$model = $url[$modelPos];
				$action = $url[$actionPos];

				//如果是成对的get，解析get参数
				if($urlCount % 2 == 1) { 
					$getStart = $actionPos+1;
					while($getStart != $urlCount) { 
						//设置get参数
						$_GET[$url[$getStart]] = $url[$getStart+1];
						$getStart += 2;
					}
				}
			}

			//加载model，执行action方法
			$modelFile = $c['MODEL_PATH'].$model.'.php';

			if(file_exists($modelFile)) { 

				//加载baseModel文件
				include $c['MODEL_PATH'].'viewModel.php';

				//加载model文件
				include $modelFile;

				//利用反射实例化model，并调用action方法
				$model = ucfirst($model);
				$modelClass = new ReflectionClass($model);
				$modelInstance  = $modelClass->newInstance($c);

				//查询是否存在改action
				foreach($modelClass->getMethods() as $method) { 
					if($method->getName() == $action) { 
						$method->invoke($modelInstance);
						return;
					}
				}
				echo '没找到对应的action';
			} else { 
				echo '没找到对应的model';
			}
		}
	}

?>